home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / GMS / GMSDev / Includes / system / events.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-20  |  2.8 KB  |  90 lines

  1. #ifndef SYSTEM_EVENTS_H
  2. #define SYSTEM_EVENTS_H TRUE
  3.  
  4. /*
  5. **  $VER: events.h V1.0
  6. **
  7. **  (C) Copyright 1996-1998 DreamWorld Productions.
  8. **      All Rights Reserved.
  9. **
  10. */
  11.  
  12. #ifndef DPKERNEL_H
  13. #include <dpkernel/dpkernel.h>
  14. #endif
  15.  
  16. /*****************************************************************************
  17. ** The Event Node.
  18. */
  19.  
  20. #define TAGS_EVENT ((ID_SPCTAGS<<16)|ID_EVENT)
  21.  
  22. struct EvtEntry {
  23.   struct Event *Event;
  24.   LONG (*Routine)(void);
  25. };
  26.  
  27. struct Event {
  28.   struct Event *Next;       /* [00] Next event node */
  29.   struct Event *Prev;       /* [04] Previous event node */
  30.  
  31.   #ifdef _DCC
  32.     LONG (*Routine)(__A0 APTR Reg1, __D0 LONG Reg2);
  33.   #else
  34.    #ifdef __SASC
  35.     __asm LONG (*Routine)(register __a0 APTR Reg1, register __d0 LONG Reg2);
  36.    #else
  37.     LONG (*Routine)(APTR Reg1, LONG Reg2);
  38.    #endif
  39.   #endif
  40.  
  41.   APTR   Args;              /* [12] Event arguments */
  42.   WORD   Priority;          /* [16] Sets position in the event chain */
  43.   WORD   Number;            /* [18] Event number */
  44.   LONG   Flags;             /* [20] Special flags */
  45.   struct DPTask *Task;      /* [24] Task owner */
  46. };
  47.  
  48. /* Event Structure Tags */
  49.  
  50. #define EVA_Routine  (TAPTR|8)
  51. #define EVA_Args     (TAPTR|12)
  52. #define EVA_Priority (TWORD|16)
  53. #define EVA_Number   (TWORD|18)
  54. #define EVA_Flags    (TLONG|20)
  55.  
  56. /* Event->Flags */
  57.  
  58. #define EVF_ON        0x00000001  /* Call routine on event (default) */
  59. #define EVF_AFTER     0x00000002  /* Call routine after event */
  60. #define EVF_UNTRACKED 0x00000004  /* Do not track the event node */
  61. #define EVF_GLOBAL    0x00000008  /* Always call if event occurs (default) */
  62. #define EVF_TASK      0x00000010  /* Call if I am the active task */
  63.  
  64. /* Return flags for Event->Routine() and CallEventList() */
  65.  
  66. #define EVR_BREAK     0x00000001  /* Do not execute any more events */
  67. #define EVR_FAIL      0x00000002  /* Return immediately (failure) */
  68.  
  69. /*****************************************************************************
  70. ** Available event types.
  71. */
  72.  
  73. #define EVTNODE (0L)
  74. #define EVTCALL (0x80000000L)
  75.  
  76. #define EVT_OnNewTask        (1|EVTNODE)   /* A new task is appearing */
  77. #define EVT_OnRemTask        (2|EVTNODE)   /* An existing task is being removed */
  78. #define EVT_ScreenToFront    (3|EVTNODE)   /* Receives: <Screen> */
  79. #define EVT_ScreenToBack     (4|EVTNODE)   /* Receives: <Screen> */
  80. #define EVT_ScreenDisplayed  (5|EVTNODE)   /* Receives: <Screen> */
  81. #define EVT_ScreenHidden     (6|EVTNODE)   /* Receives: <Screen> */
  82. #define EVT_DiskInsert       (7|EVTNODE)   /* Disk inserted by user */
  83. #define EVT_DiskRemove       (8|EVTNODE)   /* Disk removed by user */
  84. #define EVT_SelfDestruct     (9|EVTNODE)   /* Receives: <Task> */
  85. #define EVT_LowMemory       (10|EVTNODE)   /* Args: <PercentageLeft> */
  86.  
  87. #define EVT_END          200  /* Maximum amount of events for this version */
  88.  
  89. #endif /* SYSTEM_EVENTS_H */
  90.